﻿/**
 * @file MaterialFLuidsWapper.h
 * @brief 流体材料 相关的python接口
 * @author wangning (2185896382@qq.com)
 * @date 2024-12-03
 */
#ifndef _PY_SEA_MATERIALFLuids_WAPPER_H___
#define _PY_SEA_MATERIALFLuids_WAPPER_H___

#include <QString>
#include <QObject>
#include "PythonInterfaceAPI.h"
#include "FITK_Component/FITKAcousticsPhysics/PyFITKMaterialsFluid.h"

class Fluids : public Acoustics::PyFITKMaterialsFluid
{
public:
    explicit Fluids(const QString& name);
    explicit Fluids();
    virtual ~Fluids() = default;

};

/**
 * @brief 流体材料相关PYTHON接口装饰
 * @author wangning (2185896382@qq.com)
 * @date 2024-12-03
 */
class PythonInterfaceAPI MaterialFLuidsWapper : public QObject
{
    Q_OBJECT
public slots:
    Fluids* new_Fluids();

    void delete_Fluids(Fluids* obj);
    /**
     * @brief 在Python解释器中通过名称获取对象
     * @author wangning (2185896382@qq.com)
     * @date 2024-12-03
     */
    Fluids* static_Fluids_GetFluids(const QString& name);
    /**
     * @brief 获取名称
     * @author wangning (2185896382@qq.com)
     * @date 2024-12-03
     */
    QString getName(Fluids* obj);
    /**
     * @brief 设置名称
     * @author wangning (2185896382@qq.com)
     * @date 2024-12-03
     */
    void setName(Fluids* obj, const QString& name);
    /**
     * @brief  设置名称
     * @param[i]  soundSpeed：声速
     * @param[i]  density：密度
     * @param[i]  viscosity：运动粘度
     * @param[i]  specificHeat：比热容
     * @param[i]  prandtl：普朗特系数
     * @param[i]  molecular：摩尔质量
     * @param[i]  type：0气体，1液体
     * @author wangning (2185896382@qq.com)
     * @date   2024-12-03
     */
    void setFluidProp(Fluids* obj,double soundSpeed,double density,double viscosity,double specificHeat, double prandtl, double molecular, int type);
    /**
     * @brief  创建材料
     * @param[i]  name：材料名称
     * @author wangning (2185896382@qq.com)
     * @date   2024-12-03
     */
    void createMaterial(Fluids* obj, const QString& name);
};

#endif
